// 创建自定义精灵类
import {Bullet} from "../seed/Bullet.js";
import {ANIMS_PATH} from "../../common/path.js";
import PlantAbstract from "../abstract/PlantAbstract.js";

export default class ShooterPlant extends PlantAbstract {
    constructor(scene, x, y, direction,plantValue) {
        super(scene, x, y, `${plantValue.name}0`, 20,plantValue);
        this.plantValue=plantValue;
        const { Body, Bodies } = Phaser.Physics.Matter.Matter; // 访问原生的 Matter 模块
        this.label = plantValue.name; // 设置标签为火球
        this.scene = scene; // 保存场景引用
        this.direction = direction; // 保存火球的移动方向
        scene.add.existing(this); // 将火球添加到场景中

        this.setIgnoreGravity(true); // 设置忽略重力
        this.width=1;
        // 设置自定义的尺寸
        const radius = 1; // 自定义半径
        const options = {
            label: this.label,
            isSensor: false, // 确保火球可以进行物理碰撞
        };

        // 使用 Matter.js 创建一个圆形的物理体
        const zombieBody = Bodies.rectangle(x , y, this.width/4, this.height, options);
        this.setExistingBody(zombieBody); // 将物理体应用到当前的 Sprite


        // 设置横向速度
        // this.setVelocityX(5 * this.direction); // 设置火球的速度

        // 自定义物理属性
        this.setMass(1);
        this.setBounce(0); // 设置火球的反弹系数
        this.setDepth(0);
        this.bulletTime = 0
        this.init()

    }
    init() {
        const anims = ANIMS_PATH.Plants[this.plantValue.anims]
        const frames = Array.from({ length: anims.count }, (_, i) => ({ key: `${anims.name}${i}` }));
// 创建动画，自动生成帧
        this.anims.create({
            key: anims.name,
            frames: frames,
            frameRate: 10,
            repeat: -1
        });


        this.anims.play(anims.name);
    }
    createBullet(time) {
        // 创建子弹实例并设置位置
        if(time- this.bulletTime>1000){
            for(let i = 0; i < this.plantValue.seedNum; i++) {
                const delay = i * 200; // 每个子弹间隔200毫秒
                this.scene.time.delayedCall(delay, () => {
                    new Bullet(this.scene, this.x - 20, this.y - 20, 1, this.plantValue.seed);
                });
            }
            this.bulletTime =time
        }
    }
    // 更新方法
    update(time){
        this.createBullet(time)
    }
    destroy() {

       // 销毁当前的 Sprite
       super.destroy(); // 调用父类的 destroy 方法，确保资源被释放

       // 如果有其他需要清理的资源，可以在这里处理
   }
}